`
https://leetcode.cn/problems/powx-n/
`

/**
 * @param {number} x
 * @param {number} n
 * @return {number}
 */
var myPow = function (a, k) {
  if (k === 0) return 1;

  if (k === -2147483648) {
    // 把 k 是 INT_MIN 的情况单独拿出来处理
    // 避免 -k 整型溢出
    return myPow(1 / a, -(k + 1)) / a;
  }

  if (k < 0) {
    return myPow(1 / a, -k);
  }

  if (k % 2 === 1) {
    // k 是奇数
    return a * myPow(a, k - 1);
  } else {
    // k 是偶数
    let sub = myPow(a, k / 2);
    return sub * sub;
  };
}